package com.ruoyi.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.system.dto.StageQueryDTO;
import com.ruoyi.system.entity.ConstructionStageDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ConstructionStageMapper extends BaseMapper<ConstructionStageDO> {
    /**
     * 分页查询施工阶段列表
     * @param page 分页参数
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    IPage<ConstructionStageDO> queryStagePage(
            IPage<ConstructionStageDO> page,
            @Param("query") StageQueryDTO queryDTO
    );

    /**
     * 查询阶段关联的项目数量
     * @param stageId 阶段ID
     * @return 关联项目数
     */
    Integer getRelatedProjectCount(@Param("stageId") Long stageId);

    /**
     * 查询可用阶段列表（启用状态，按排序号升序）
     * @param designerId 设计师ID（自定义阶段仅查询当前设计师，固定阶段不限制）
     * @return 可用阶段列表
     */
    List<ConstructionStageDO> getAvailableStages(@Param("designerId") String designerId);

    /**
     * 检查阶段名称是否已存在（排除当前阶段ID）
     * @param stageName 阶段名称
     * @param excludeId 排除的阶段ID（修改时用）
     * @return 存在数量（0=不存在，1=存在）
     */
    Integer checkStageNameExist(@Param("stageName") String stageName, @Param("excludeId") Long excludeId);
}